package frsf.cidisi.exercise.tpidemia.situationCalculus;

import Interfaz.NewJFrame;
import Interfaz.NewJPanel;
import frsf.cidisi.exercise.tpidemia.entidades.Aldea;
import frsf.cidisi.exercise.tpidemia.entidades.Cofre;
import frsf.cidisi.exercise.tpidemia.entidades.Pair;
import frsf.cidisi.exercise.tpidemia.entidades.PairDist;
import static frsf.cidisi.exercise.tpidemia.search.ArqueologoEstadoEntorno.anillo;
import static frsf.cidisi.exercise.tpidemia.search.ArqueologoEstadoEntorno.colgante;
import static frsf.cidisi.exercise.tpidemia.search.ArqueologoEstadoEntorno.diamante;
import static frsf.cidisi.exercise.tpidemia.search.ArqueologoEstadoEntorno.moneda;
import static frsf.cidisi.exercise.tpidemia.search.ArqueologoEstadoEntorno.rubi;
import frsf.cidisi.faia.agent.ActionFactory;
import frsf.cidisi.faia.agent.Perception;
import frsf.cidisi.faia.agent.situationcalculus.KnowledgeBase;
import frsf.cidisi.faia.agent.situationcalculus.SituationCalculusPerception;
import frsf.cidisi.faia.exceptions.PrologConnectorException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Hashtable;

public class ArqueologoState extends KnowledgeBase {

    private Aldea posicionActual;
    private Aldea posicionObjetivo;
    private double pesoAcoplado;
    private double valorAcoplado;
    private Cofre camara;

	

    public ArqueologoState() throws PrologConnectorException {

		//TODO: Replace file name  
        super("arqueologo.pl");
        System.out.println("arqueologo.pl");

        this.initState();
    }

    @Override
    public ActionFactory getActionFactory() {
        return ArqueologoActionFactory.getInstance();
    }

    @Override
    public String getSituationPredicate() {
        return "actualSituation";
    }

    @Override
    public String getBestActionPredicate() {
        return "mejorAccion";
    }

    @Override
    public String getExecutedActionPredicate() {
        return "accionEjecutada";
    }

    @Override
    public void updateState(Perception p) {
        
        ArqueologoPerception percep = (ArqueologoPerception)p;
        this.posicionActual = percep.getPosicion();
        this.posicionObjetivo = percep.getAldeaFinal();
        this.pesoAcoplado = percep.getPesoAcoplado();
        this.valorAcoplado = percep.getValorAcoplado();
        this.camara = percep.getCamara();
        this.addKnowledge("ciudadFin("+this.posicionObjetivo.getNombre()+","+this.getSituation()+")");
        
        this.tell((SituationCalculusPerception) p);
    }

    @Override
    public void initState() {
        

    }
    
    public String getPosicion() {
        return posicionActual.getNombre();
    }

    public double getCapacidadOcupada() {
        
        return pesoAcoplado;
    }

    public Aldea getPosicionActual() {
        return posicionActual;
    }

    public void setPosicionActual(Aldea posicionActual) {
        this.posicionActual = posicionActual;
    }

    public double getPesoAcoplado() {
        return pesoAcoplado;
    }

    public void setPesoAcoplado(double pesoAcoplado) {
        this.pesoAcoplado = pesoAcoplado;
    }

    public double getValorAcoplado() {
        return valorAcoplado;
    }

    public void setValorAcoplado(double valorAcoplado) {
        this.valorAcoplado = valorAcoplado;
    }

    public Cofre getCamara() {
        return camara;
    }

    public void setCamara(Cofre camara) {
        this.camara = camara;
    }


    public double getValorObtenido() {
        return this.valorAcoplado;
    }


    public Aldea getPosicionObjetivo() {
        return posicionObjetivo;
    }


		
    

    @Override
    public String toString() {
        String str = "";
        

        return str;

    }
}
